home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-01
/
wics.zip
/
IBAR.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-03
|
5KB
|
236 lines
//==============================================================================================
//
// Windows Interface Construction Set
// Version 1.00
//
// IBAR.CPP - Icon Bar Class
// Copyright ⌐ 1993 by Microdyne Development Technologies.
// All rights reserved.
//==============================================================================================
#include <ibutton.h>
#include <ibar.h>
#include <wics.h>
BOOL FAR PASCAL FindChildWithId (HWND hWnd, LONG lParam);
TIconBar::TIconBar (PTWindowsObject AParent, WORD wHeight) :
TWindow (AParent, NULL)
{
Attr.Id = 10;
Attr.Style = WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | WS_CLIPCHILDREN;
Attr.X = -1;
Attr.Y = -1;
Attr.W = 10;
Attr.H = ( wHeight ) ? wHeight : 25 ;
SetFlags(WB_MDICHILD, FALSE);
pFontSelection = NULL;
xPoint = 2 ;
hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
}
TIconBar::~TIconBar ()
{
DeleteObject (hBrush);
}
void TIconBar::GetWindowClass(WNDCLASS& WndClass)
{
TWindow::GetWindowClass( WndClass );
WndClass.hbrBackground = GetStockObject (LTGRAY_BRUSH);
}
void TIconBar::WMCtlColor (RTMessage Msg)
{
Msg.Result = hBrush;
}
void TIconBar::PlaceButton (WORD x, WORD y, WORD Id, BOOL fState)
{
GetModule()->MakeWindow(new TIconBarButton (this, Id, x, y, fState));
}
void TIconBar::PlaceButton (WORD Id, BOOL fState)
{
PTIconBarButton pButton ;
GetModule()->MakeWindow((pButton = new TIconBarButton (this, Id, xPoint, 2, fState)));
xPoint += pButton->GetControlLength() - 1;
}
typedef struct _FINDWINID
{
WORD Id;
HWND hwnd;
} FINDWINID;
BOOL FAR PASCAL FindChildWithId (HWND hWnd, LONG lParam)
{
if (GetWindowWord (hWnd, GWW_ID) == ((FINDWINID FAR *)lParam)->Id)
{
((FINDWINID FAR *)lParam)->hwnd = hWnd ;
return FALSE ;
}
return TRUE;
}
void TIconBar::RemoveControl (WORD Id)
{
FINDWINID FindWinId;
FARPROC lpproc;
FindWinId.Id = Id;
FindWinId.hwnd = NULL;
lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
FreeProcInstance (lpproc);
if (FindWinId.hwnd != NULL)
{
SendMessage (FindWinId.hwnd, WM_CLOSE, 0, 0L);
}
}
void TIconBar::SetButtonState (WORD Id, BOOL fState)
{
FINDWINID FindWinId;
FARPROC lpproc;
FindWinId.Id = Id;
FindWinId.hwnd = NULL;
lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
FreeProcInstance (lpproc);
if (FindWinId.hwnd != NULL)
{
SendMessage (FindWinId.hwnd, BM_SETCHECK, (WPARAM) fState, 0L);
}
}
BOOL TIconBar::IsButtonChecked (WORD Id)
{
FINDWINID FindWinId;
FARPROC lpproc;
FindWinId.Id = Id;
FindWinId.hwnd = NULL;
lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
FreeProcInstance (lpproc);
if (FindWinId.hwnd != NULL)
{
return (BOOL) SendMessage (FindWinId.hwnd, BM_GETCHECK, 0, 0L);
}
return FALSE;
}
void TIconBar::Paint (HDC hdc, PAINTSTRUCT&)
{
RECT WndRect;
GetClientRect (HWindow, &WndRect);
FrameRect (hdc, &WndRect, GetStockObject(BLACK_BRUSH));
}
WORD TIconBar::GetHeight ()
{
return Attr.H;
}
void TIconBar::WMCommand (RTMessage msg)
{
PostMessage (Parent->HWindow, msg.Message, msg.WParam, 0L);
}
void TIconBar::WMSetFocus (RTMessage msg)
{
SetFocus ((HWND) msg.WParam);
}
void TIconBar::PlaceFontSelectionControl (WORD x, WORD y, WORD Id)
{
GetModule()->MakeWindow((pFontSelection = new TFontSelect (this, Id, x, y)));
}
void TIconBar::PlaceFontSelectionControl (WORD Id)
{
GetModule()->MakeWindow((pFontSelection = new TFontSelect (this, Id, xPoint, 0)));
xPoint += pFontSelection->GetControlLength();
}
void TIconBar::SetButtonCommandCode (WORD Id, WORD cmd)
{
FINDWINID FindWinId;
FARPROC lpproc;
FindWinId.Id = Id;
FindWinId.hwnd = NULL;
lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
FreeProcInstance (lpproc);
if (FindWinId.hwnd != NULL)
{
SendMessage (FindWinId.hwnd, WBM_SETCOMMANDCODE, (WPARAM) cmd, 0L);
}
}
void TIconBar::GetSelectedFontFamilyName (WORD cchMax, LPSTR lpBuffer)
{
if ( pFontSelection != NULL )
pFontSelection->GetFamilyName(cchMax, lpBuffer);
}
void TIconBar::SetFontFamilyName (LPSTR lpBuffer)
{
if ( pFontSelection != NULL )
pFontSelection->SetFamilyName (lpBuffer);
}
void TIconBar::SetFontFamilyCommandCode (WORD code)
{
if ( pFontSelection != NULL )
pFontSelection->SetFamilyCommandCode(code);
}
int TIconBar::GetSelectedFontSize ()
{
if ( pFontSelection != NULL )
return pFontSelection->GetFontSize();
return 0;
}
void TIconBar::SetFontSize (int s)
{
if ( pFontSelection != NULL )
pFontSelection->SetFontSize(s) ;
}
void TIconBar::SetFontSizeCommandCode (WORD code)
{
if ( pFontSelection != NULL )
pFontSelection->SetFontSizeCommandCode(code);
}
void TIconBar::SetFontStyle (LOGFONT FAR *lplf)
{
if ( pFontSelection != NULL )
{
pFontSelection->SetFamilyName(lplf->lfFaceName);
pFontSelection->SetFontSize(lplf->lfHeight);
}
}